在软件工程(尤其是领域驱动设计 DDD)中,“value object(值对象)”指只通过其属性值来定义身份的对象:它通常不可变(immutable)、可替换,不依赖唯一标识(ID)。例如“金额(Money)”“日期范围(DateRange)”“地址(Address)”常被建模为值对象。(在其他语境中也可能有不同含义,但最常见的是这一技术用法。)
/ˈvæljuː ˈɑːbdʒekt/
A value object has no identity; only its values matter.
值对象没有身份标识;重要的是它的取值。
In domain-driven design, modeling Money as a value object helps prevent invalid states and makes equality comparisons straightforward.
在领域驱动设计中,把“金额”建模为值对象有助于避免无效状态,并让相等性比较更直接。
“Value”源自拉丁语 valēre(意为“强健、有效、有价值”),逐渐引申为“价值、数值”。“Object”源自拉丁语 objectum(“被放在前面的东西”),在现代编程语境中指“对象”。组合成“value object”后,在面向对象与DDD语境中特指“以值而非身份来区分的对象”,与“entity(实体)”形成对比。